package com.woniu.order.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @program: ECP
 * @description:
 * @create: 2024-11-26 10:51
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ZfTraderApplyDto {
    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 订单申请编号（唯一）
     */
    private String code;

    /**
     * 销售员code码
     */
    private String salesmanCode;

    /**
     * 税额
     */
    private BigDecimal taxAmount;

    /**
     * 销售数量
     */
    private Integer salesQuantity;

    /**
     * 订单签订日期
     */
    private String orderDate;

    /**
     * 订单总原价
     */
    private BigDecimal totalOriginalPrice;

    /**
     * 折扣率
     */
    private BigDecimal discountRate;

    /**
     * 优惠金额
     */
    private BigDecimal discountAmount;

    /**
     * 订单金额（含税）
     */
    private BigDecimal totalPriceWithTax;

    /**
     * 订单金额（不含税）
     */
    private BigDecimal totalPriceWithoutTax;

    /**
     * 订单毛利率
     */
    private BigDecimal grossMargin;

    /**
     * 审批状态（0等待经理审批，1等待总监审批，2完成审批）
     */
    private Integer approvalStatus;

    /**
     * 产品
     */
    private String product;

    /**
     * 分销商
     */
    private String distributor;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 修改日期
     */
    private Date modifiedDate;

    /**
     * 分销商联系方式
     */
    private String modifiedTel;

    /**
     * 记录创建时间
     */
    private String tradeCode;

    /**
     * 记录更新时间
     */
    private Date updateTime;

    /** 产品信息列表 */
    private List<ApplyOrderDto.ProductDto> productList;

    @Data
    public static class ProductDto {

        /** 产品ID */
        private Integer productId;

        /** 产品名称 */
        private String productName;

        /** 产品编码 */
        private String productCode;

        /** 销售数量 */
        private Integer salesQuantity;

        /** 销售单价 */
        private Double salePrice;

        /** 单位（如: 件, 箱） */
        private String unit;
    }
}